package manager;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;

import org.primefaces.model.UploadedFile;

import persistence.UsuarioDao;
import entity.Usuario;

@ManagedBean(name="mb")
@RequestScoped
public class ManagerBean {
	
	private Usuario usuario;
	
    private List<Usuario>listaUsuario;
	
	private UploadedFile arquivo;
	
	public ManagerBean() {
		
		usuario = new Usuario();
	}
	
	public UploadedFile getArquivo() {
		return arquivo;
	}

	public void setArquivo(UploadedFile arquivo) {
		this.arquivo = arquivo;
	}
	
	public void excluir(){
		
		FacesContext fc = FacesContext.getCurrentInstance();
		String msg=  "";
		
		
		try {
			
			new UsuarioDao().delete(usuario);
			msg = "Usuario excluido com suscesso";
			
			
		} catch (Exception e) {
			msg="Erro: " +e.getMessage();
			e.printStackTrace();
		}
		
		fc.addMessage("accordion:form2", new FacesMessage(msg));
	}
	
	
	public void cadastrar(){
		String msg="";
		FacesContext fc = FacesContext.getCurrentInstance();
		
		try {
			
		   byte arq[] =	arquivo.getContents();
			
		   
		   ServletContext context = (ServletContext)fc.getExternalContext().getContext();
		   
		   usuario.setAtivo(true);
		   usuario.setImagem(usuario.getLogin() + ".jpg");
		   
		   String caminho = context.getRealPath("/images");
		   
		   
		   FileOutputStream fos = new FileOutputStream(caminho + "/" + usuario.getImagem());
		   
		   fos.write(arq);
		   fos.close();
		   
		  
		    new UsuarioDao().create(usuario);
		    
		    usuario =  new Usuario();
		    
		    
		    msg="Usuario Cadastrado com Sucesso";
		   
		} catch (Exception e) {
			msg="Erro: " +e.getMessage();
			e.printStackTrace();
		}
		
		
		fc.addMessage("accordion:form1", new FacesMessage(msg));
		
	}

	public List<Usuario> getListaUsuario() {
		
		
		listaUsuario =  new ArrayList<>();
		listaUsuario =  new UsuarioDao().findAll();
		
		return listaUsuario;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public void setListaUsuario(List<Usuario> listaUsuario) {
		this.listaUsuario = listaUsuario;
	}
	
	
	
	

}
